"""
字典： KV 键值对的结构 --> Java Map HashMap
    一个K 对应 一个 V
     K不能重复
"""

def dict_1():
    #定义字典 {K:V}
    fruits = {"苹果":10,"葡萄":15,"香蕉":2.5,"柚子":10}
    print(fruits)
    # 定义字典的其他方式  扩展内容 可学可不学
    #--根据构造器方法去创建 dict(K=V)
    item1 = dict(one=1,two=2,three=3)
    print(item1)
    #-- 通过zip函数，将两个序列压成字典
    item2 = dict(zip(["a","b","c"],"123"))
    print(item2)
    #-- 利用推导式创建字典  了解
    item3 = {num:num**2 for num in range(1,10) }
    print(item3)

    #通过键获取字典中对应的值
    print(fruits["葡萄"])

    #输出字典的所有键
    print(fruits.keys())
    # 输出字典的所有键
    print(fruits.values())
    # 输出列表，列表中每个元素是元组 ，这个元组有两个元素，对应K和V
    print(fruits.items())#[('苹果', 10), ('葡萄', 15), ('香蕉', 2.5), ('柚子', 10)]

    #根据元素 已有的Key对值进行修改
    fruits["香蕉"] = 25
    print(fruits)
    fruits["柠檬"] = 17 # 如果Key不在字典当中，则追加数据
    print(fruits)
    #字典的update函数 可以传入多个KV
    fruits.update(苹果=67,菠萝=13)
    print(fruits)
    #字典的get函数 如果该key不存在，则可以返回默认值
    price =  fruits.get("榴莲",60) #即使Key不存在 也不会报错 会返回None
    #price = fruits["榴莲"] # Key不存在旧报错
    print(price)
    #{'苹果': 67, '葡萄': 15, '香蕉': 25, '柚子': 10, '柠檬': 17, '菠萝': 13}
    # 字典的 popItem 和 pop
    # -- popItem 直接弹出最后一个 KV
    print(fruits.popitem()) #('菠萝', 13)
    print(fruits)#{'苹果': 67, '葡萄': 15, '香蕉': 25, '柚子': 10, '柠檬': 17}
    # pop 根据Key 来 弹出值 如果该Key不存在，可以返回默认值
    print(fruits.pop("苹果"))
    print(fruits)
    print(fruits.pop("榴莲",60))
    print(fruits)
    #清空字典
    fruits.clear()
    print(fruits)
    #设置默认数据 添加数据的一种
    fruits.setdefault("榴莲",60)
    print(fruits)
    fruits.setdefault("榴莲", 100) # 当再次设置相同Key的默认值是没有效果
    fruits["榴莲"] = 100
    print(fruits)
    #del 删除元素
    del fruits["榴莲"]
    print(fruits)

#字典的遍历
def dict_2():
    fruits = {"苹果": 10, "葡萄": 15, "香蕉": 2.5, "柚子": 10}
    #根据 Key 来获取 值
    for key in fruits.keys():
        print(key,fruits[key])
    #遍历字典中的每一个元组，根据索引值获取K V
    for item in fruits.items():
        print(item,item[0],item[1])
    # 遍历字典中的每一个元素，直接打印 K V
    for key,value in fruits.items():
        print(key,value)

if __name__ == '__main__':
    #dict_1()
    dict_2()